// 对新旧虚拟树进行深度优先遍历
// 1. 如果是文本内容，则比较文本内容是否相同
//     使用对象做文本内容的标记为【文本类型】，并保存最新文本，保存到最新的补丁数组中
// 2. 如果是节点，比较是否为同一节点
//     2.1 判断是否有新标签 && 标签名是否相同 && && 标签的key是否相同
//     2.2 如果相同，比较节点上的属性
//         2.2.1 如果属性有差异，使用对象对节点标记为【属性差异类型】，并保存最新属性，保存到最新的补丁数组中
//     2.3 判断子节点是否有 'ignore' 属性，如果没有，则比较子节点
// 3. 如果新旧节点不相同
//     使用对象对节点标记为节点替换类型，并保存新节点，保存到最新的补丁数组中


const REPLACE = 0 // 替换原先的节点
const REORDER = 1 // 重新排序
const PROPS = 2 // 修改了节点的属性
const TEXT = 3 // 文本内容改变 